package br.com.hs.nfe.common.to;

import br.com.hs.nfe.common.exception.HSBaseException;
import java.util.Date;
import java.util.List;

/**
 * Classe de representação do lote de envio da NF-e.
 * @author Ranlive Hrysyk
 */
public class LoteTO extends BaseTO {

    private long idLote;
    private String serie;
    private String cnpjTransmissao;
    private Date dataTransmissao;
    private String numeroRecibo;
    private String xmlRetorno;
    private Date dataProcessamento;
    private String codigoRetorno;
    private List<NotaFiscalTO> notasFiscais;
    private HSBaseException exception;

    /**
     * Informar o identificador de controle do envio do lote, as notas fiscais que serão transmitidas e série das notas.
     * @param idLote Número seqüencial auto-incremental, de controle correspondente ao identificador 
     * único do lote enviado. A responsabilidade de gerar e controlea esse número é exclusiva
     * do contribuinte.
     * @param notas Conjunto de NF-e transmidas (máximo de 50 NF-e).
     * @param serie Série das notas ficais emitidas.
     */
    public LoteTO(long idLote, List<NotaFiscalTO> notas, String serie) {
        this.idLote = idLote;
        this.notasFiscais = notas;
    }

    /**
     * Identificador de envio do lote.
     */
    public long getIdLote() {
        return idLote;
    }

    /**
     * CNPJ de transmissão.
     */
    public String getCNPJTransmissao() {
        return cnpjTransmissao;
    }

    /**
     * Informar o CNPJ de transmissão.
     * @param cnpjTransmissao CNPJ de transmissão
     */
    public void setCNPJTransmissao(String cnpjTransmissao) {
        this.cnpjTransmissao = cnpjTransmissao;
    }

    /**
     * Data de transmissão do lote.
     */
    public Date getDataTransmissao() {
        return dataTransmissao;
    }

    /**
     * Informar a data de transmissão do lote.
     * @param dataTransmissao Data de transmissão do lott
     */
    public void setDataTransmissao(Date dataTransmissao) {
        this.dataTransmissao = dataTransmissao;
    }

    /**
     * Número do recibo.
     */
    public String getNumeroRecibo() {
        return numeroRecibo;
    }

    /**
     * Informar o número do recibo da mensagem.
     * @param numeroRecibo Número do recibo
     */
    public void setNumeroRecibo(String numeroRecibo) {
        this.numeroRecibo = numeroRecibo;
    }

    /**
     * Documento XML de retorno.
     */
    public String getXmlRetorno() {
        return xmlRetorno;
    }

    /**
     * Informar a String do documento XML de retorno.
     * @param xmlRetorno Documento XML de retorno
     */
    public void setXmlRetorno(String xmlRetorno) {
        this.xmlRetorno = xmlRetorno;
    }

    /**
     * Data de processamento do lote.
     */
    public Date getDataProcessamento() {
        return dataProcessamento;
    }

    /**
     * Informar a data de processamento do lote.
     * @param dataProcessamento Data de processamento do lote
     */
    public void setDataProcessamento(Date dataProcessamento) {
        this.dataProcessamento = dataProcessamento;
    }

    /**
     * Código de retorno do lote.
     */
    public String getCodigoRetorno() {
        return codigoRetorno;
    }

    /**
     * Informar o código de retorno do lote.
     * @param codigoRetorno Código de retorno do lote
     */
    public void setCodigoRetorno(String codigoRetorno) {
        this.codigoRetorno = codigoRetorno;
    }

    /**
     * Conjunto de NF-e transmitidas.
     */
    public List<NotaFiscalTO> getNotasFiscais() {
        return notasFiscais;
    }

    /**
     * Série das NF-e's;
     */
    public String getSerie() {
        return serie;
    }

    /**
     * Exceção do Web Service.
     */
    public HSBaseException getException() {
        return exception;
    }

    /**
     * Informar a exceção gerada no Web Service.
     * @param exception Exceção do Web Service
     */
    public void setException(HSBaseException exception) {
        this.exception = exception;
    }
}
